<?php

namespace Our;

/**
 * api模块控制器抽象类
 */
abstract class Controller_AbstractApi extends \Our\Controller_Abstract {

    public function init() {
        \Yaf\Dispatcher::getInstance()->disableView();
    }

    /**
     * 输出http请求后的结果信息
     * @param type $params
     */
    protected function _echoHttpResult($params) {
        if ('0' == $params['errno']) {
            $this->_echoSuccessMessage($params['errmsg'], $params['data']);
        } else {
            $this->_echoErrorMessage($params['errmsg'], $params['errno']);
        }
    }

    /**
     * 判断$param是否是json格式字段
     * 
     * @param string $param
     */
    protected function _isJson($param) {
        @json_decode($param, true);
        if (json_last_error() == JSON_ERROR_NONE) {
            return $param;
        }

        //处理json格式中有换行的情况和"\\"字符的情况。
        $param = str_replace(array("\r\n", "\n", "\\"), array("\\r\\n", "\\n", "\\\\"), $param);

        @json_decode($param, true);
        if (json_last_error() == JSON_ERROR_NONE) {
            return $param;
        }

        \Our\Log::getInstance()->write('json decode失败 params:' . var_export($this->_getPost(), true)
                . ', cookie:' . var_export($this->_getSso(), true), 'debug.log');
        \Error\ErrorModel::throwException(110030);
    }

}
